我們只要利用tabBarItem的屬性badgeValue去設定我們想要的字串
if let items = self.tabBar.items {
items[index].badgeValue = val
}
例如我們把index設為0,val設為"1234",則結果如下圖:
假設我們不希望無特定權限的使用者去存取某個頁面,例如使用者沒有登入,但是你希望能夠讓他使用部分功能,而登入後才能用的功能要鎖起來,則這時候我們就需要disable特定的tab item,只要利用UITabBarControllerDelegate中的system callback shouldSelect即可,例如我們不希望未登入使用者使用最後一頁,則我們可以加入以下的code,記得一樣把tabBarController的delegate設為self,這樣才會執行到 UITabBarControllerDelegate的system callback:
法一:
extension TabBarViewController: UITabBarControllerDelegate {
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
if let viewControllers = tabBarController.viewControllers {
if viewController == viewControllers[0] {
return false
}
}
return true
}
}
法二:
extension TabBarViewController: UITabBarControllerDelegate {
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
if viewController is Page1ViewController {
return false
} else {
return true
}
}
}
如果你disable的tab item是第一個viewController,即index為0.記得要先呼叫self.selectedIndex = 1,否則一開始第一個tab item還是會呈現選取狀態,當然也會顯示出該頁面.
以下為完整專案連結:
https://github.com/tgnivekucn/TabBarController2
ref:
https://medium.com/@nwy0206/swift%E7%AD%86%E8%A8%98-tab-bar-2ddba7d56587